Amazon AppStream 2.0の各設定項目を解説しつつ、Quick Linksのサンプルアプリケーションをセットアップしてみた
はじめに
Amazon AppStream 2.0の各設定項目を解説しつつ、Quick LinksでAWSが提供するサンプルアプリケーションをセットアップしてみました。
AppStream 2.0は、デスクトップアプリケーションにオンデマンドでアクセスできるようにする、マネージド型のアプリケーションストリーミングサービスです。
Quick Linksでのサンプル アプリケーションのセットアップ手順は、AWSドキュメントにも記載されていますが、実際の設定項目にはいくつか異なる点があるため注意が必要です。
サンプルスタックをセットアップ
左側のナビゲーションメニューから [Quick Links] を選択し、[Set up with sample apps] をクリックします。
スタック詳細
以下の通りに設定します。すべてデフォルト設定です。
Name
:スタック名- ExampleStack
Description
:説明- This is a sample stack with sample applications
- `Display Name:スタックの表示名。
- 指定しません
Redirect URL
:エンドユーザーがストリーミングセッションの終了後にリダイレクトされる URL- 指定しません
Feedback URL
:ユーザーがフィードバックを送信するための URL を指定します。- 指定しません
Streaming Endpoint
:AppStream 2.0のVPCエンドポイントを設定すると、VPC 経由でストリーミングできます。設定しない場合、インターネット経由でストリーミングされます。- Internet
Host domains
:AppStream 2.0 ストリーミングセッションをウェブページに埋め込むドメインを指定します。HTTPS経由でのみサポートされます。- 指定しません
Streaming Endpointの項目について、インターネット経由でAppStream 2.0のアプリケーションにアクセスする構成は以下の通りです。
AWSが管理するVPC内に存在するストリーミングゲートウェイを経由して、ストリーミングインスタンス(フリートインスタンスやImage Builder)にアクセスできます。
Streaming EndpointにVPCエンドポイントを設定すると、以下の通りインターネットを介さずにアプリケーションをストリーミングできます。設定する場合、事前にAppStream 2.0のVPCエンドポイントを作成する必要があります。
イメージ選択
ここではAWSが提供するイメージまたは自分のアカウントで作成したイメージから選択できます
今回は、AWS側で用意された「Amazon-AppStream2-Sample-Image-03-11-2023 (Public)」を選択します。
フリートの構成
インスタンスタイプは、デフォルトの「stream.standard.medium」を選択します。
フリートタイプの選択肢は、以下の2つです。今回は、Always-Onを選択します。
- Always-On
- 即座にユーザーがアプリにアクセスできます。ストリーミングしているユーザーがいない場合でも、フリート内で実行中のすべてのインスタンスに対して料金が発生します。
- On-Demand
- ユーザーのセッションの開始時間は約 1~2分かかります。アプリをストリーミング時、Always-Onと同等のフリートインスタンス料金が発生しますが、アプリをストリーミングしていない場合、フリートインスタンスごとに少額の時間料金のみが請求されます。
どちらもフリートを停止すると料金は発生しません。
上記とは別にユーザー料金も発生します。
Microsoft Windows Server を実行しているフリートインスタンスでストリーミングセッションを開始した各ユーザーに Microsoft Remote Desktop Services Subscriber Access License (RDS SAL) 料金が課金されます。
シングルセッションフリートの場合、ユーザーごとに 1 か月あたり 4.19 USDが請求されます。
RDS SAL 料金は、当月にストリーミングセッションを開始した各ユーザーについて全額課金され、按分計算はされません。
なお、Amazon Linux 2 オペレーティングシステムを使用するフリートインスタンスからのストリーミングの場合、ユーザー料金は発生しません。
ユーザーセッションについては以下の3つを設定します。すべてデフォルト値にしました。
Maximum session duration in minutes
:最大セッション継続時間(分)- ストリーミングセッションの最大時間を設定します。
- デフォルト値では最大960分まで利用できます。
Disconnect timeout in minutes
:切断タイムアウト (分)- ユーザーが切断後、ストリーミングセッションをアクティブのままにする時間を設定します。
- デフォルト値では切断してから15分間アクティブのままです。
Idle Disconnect Timeout in minutes
:アイドル切断タイムアウト (分)- ユーザーがストリーミングセッションから切断されるまでにアイドル状態 (非アクティブ) であることができる時間
- 以下の場合、ユーザーのアクティビティではなく、アイドル状態であると見なされます。
- ファイルのアップロードやダウンロード
- オーディオ入力、オーディオ出力
- ピクセルの変更
- デフォルト値では、アイドル状態が15分間続くと、セッションが切断されます。
フリートキャパシティでは、以下の3つを設定します。全てデフォルト値にしました。
Multiple user sessions
:単一のインスタンス上で複数のユーザーで利用するマルチセッション構成- 1フリートインスタンス当たりの最大セッション数が設定可能です。
- デフォルトはオフです。
- 実際の試したブログはこちら
Minimum capacity
:最小容量- 予想される同時ユーザーの最小数に基づいて、フリートインスタンスの最小数を選択します。
- デフォルトは1です。
Maximum capacity
:最大容量- 予想される同時ユーザーの最大数に基づいて、フリートインスタンスの最大数を選択します。
- デフォルトは5です。
Stream viewでは、アプリケーションのみをストリーミングするか、もしくはデスクトップ自体を利用できるようにするか選択します。
今回は、アプリケーションのみを選択します。
IAMロールを適用するかどうかを選択します。フリートインスタンスでAWS CLIの実行環境を提供したり、他のAWSサービスにアクセスが必要な場合設定します。
今回は不要なので適用しません。
スケーリング設定はデフォルトのままとします。デフォルトでは、メトリクスのうちインスタンス使用率(Capacity Utilization
)が75%を超えると、インスタンスを2つ増やし、25%未満まで下がるとインスタンスを1つ減らします。
他のメトリクスや他のスケーリングについては、以下をご参照ください。
ネットワーク構成
ネットワーク構成では以下の2点の設定が必須です。
- 「Default Internet Access」の有無
- VPCやサブネット、セキュリティグループの設定
「Default Internet Access」は、AppStream 2.0のストリーミングインスタンス(フリートインスタンスやImage Builder)にインターネットアクセスを提供するオプションです。
AWSが管理するVPC内にあるストリーミングインスタンスは、パブリックサブネット上のElastic Network Interface(ENI)を通じてElastic IPアドレスを取得し、インターネットに接続します。なお、Elastic IPの所有者はユーザーアカウントではなくAWSです。
ただし、インターネットから直接アクセス可能なため、「Default Internet Access」の代わりにNATゲートウェイを使用して、ストリーミングインスタンスに対してインターネットアクセスを提供することが推奨されています。
「Default Internet Access」を有効にした場合、サポートされるフリートインスタンスの最大数は100に制限されます。
ストリーミングインスタンスがインターネットアクセスを必要とする場合、以下のいくつかの実現方法があります。
- [推奨]プライベートサブネットとパブリックサブネット(+ NATGateway)
- ストリーミングインスタンスをプライベートサブネットで起動し、パブリックサブネットにNATゲートウェイを設定します
- インスタンスにはプライベートIPが割り当てられ、インターネットから直接アクセスできません
- ストリーミングインスタンスの数が100を超える場合に有効です
- パブリックサブネット(+ Default Internet Access を有効)
- ストリーミングインスタンスをパブリックサブネットで起動し、デフォルトのインターネットアクセスを有効化します
- インスタンスにはパブリックIPが割り当てられ、インターネットから直接アクセス可能
- ストリーミングインスタンス数が 100 未満の場合であれば、有効です。
- デフォルトVPCとパブリックサブネット(+ Default Internet Access を有効)
- AppStream 2.0を手っ取り早く開始できます
- デフォルトVPCを使用することで、新しいVPCを作成する手間を省くことができます。ただし、セキュリティや柔軟性の面では、自身でVPCを作成するほうがよいでしょう。
推奨構成イメージは以下です。
今回は、さっと試したいので、「パブリックサブネット(+ Default Internet Access を有効)」の方法を採用します。
サブネットにはパブリックを選択します。
セキュリティグループの設定は、アウトバンドルールにおいてすべてのトラフィックを許可し、インバウンドルールは不要です。
ストレージの設定
AppStream 2.0は、以下の永続的ストレージオプションをサポートしています。
- ホームフォルダ
- Google Drive for Google Workspace
- OneDrive ビジネス向け
ホームフォルダを有効にすると、ユーザーが自身のホームフォルダに保存したデータは、S3バケットへ自動的にバックアップされ、ユーザーは後続のセッションでもデータにアクセスできます。
ホームフォルダは、シングルセッションの場合、 フリートインスタンスの以下の場所に保存されます。
C:\Users\PhotonUser\My Files\Home Folder
ホームフォルダを有効にすると、S3バケットが自動で作成されます。
今回はホームフォルダのみを有効化しました。
ユーザー設定
ユーザー設定では、以下が設定可能です。すべてデフォルトの設定にしました。
- クリップボード
- ローカルからリモート、リモートからローカルへコピーアンドペーストが可能
- ローカルデバイスにコピーする文字制限 - オプション
- ローカルからリモートセッションに貼り付ける文字数制限
- リモートセッションからローカル デバイスに貼り付ける文字数制限
- ファイル転送
- ローカルからアップロード、リモートセッションからダウンロードが可能
- ローカルデバイスへの印刷を有効にする
- Active Directoryの認証方法
- パスワードもしくはスマートカードサインイン
- アプリケーション設定の永続化
- ユーザー毎に以下の設定情報がS3バケットに保存されます。ストリーミングセッション後に自動保存され、次のセッションでも同様の設定で利用可能
- ブラウザのお気に入り
- ウェブページセッション
- プラグイン
- UIのカスタマイズ
- ユーザー毎に以下の設定情報がS3バケットに保存されます。ストリーミングセッション後に自動保存され、次のセッションでも同様の設定で利用可能
作成されるリソース
AppStream 2.0のENIのほか、以下が自動作成されます。
- S3
- appstream-app-settings-リージョン名-アカウントID-gyz5cx1f
- アプリケーション設定の永続化
- appstream2-36fb080bb8-リージョン名-アカウントID
- ホームフォルダ
- appstream-app-settings-リージョン名-アカウントID-gyz5cx1f
- CloudWatchメトリクス
- CloudWatchアラーム
AppStream 2.0に接続
AppStream 2.0に接続します。
接続方法は以下の3つの方法がありますが、今回はストリーミングURLを作成して接続します。
- SAML 2.0
- AppStream 2.0 ユーザープール
- ストリーミング URL
Create Streaming URL
をクリックします。
適当なユーザー IDを入力します。URLが有効な期間の長さも指定します。
発行されたURLに遷移すると、複数のアプリケーションが選択可能です。画面右上の[Try the new Portal]をクリックします。
firefoxを選択します。
firefoxが起動できました。
料金
今回のセットアップにおいて、AppStream 2.0として課金される料金は2つです。
- Always-On
- stream.standard.mediumの場合、0.12USD/時間
- フリートを停止した場合、料金はかかりません
- ストリーミングセッションが発生した当月に対して、Windows OSを実行しているフリートインスタンスでストリーミングセッションを開始した各ユーザーに RDS SAL料金が課金されます
- シングルセッションフリートの場合、ユーザーごとに 1 か月あたり 4.19 USD
- フリートを停止すると、かからない
最後に
今回は、Amazon AppStream 2.0の各設定項目を解説しながら、サンプルアプリケーションをセットアップしてみました。
各設定項目を一つ一つ確認することで、AppStream 2.0に対する理解が深まりました。この記事がどなたかの参考になれば幸いです。